#!/usr/bin/perl
# A simple script for making releases of the pciutils
# (c) 2003--2012 Martin Mares <mj@ucw.cz>

use strict;
use warnings;
require "./maint/release.pm";

# Check API version
my $apiver = "???";
open X, "lib/pci.h" or die;
while (<X>) {
	/^#define PCI_LIB_VERSION 0x(.{6})$/ and $apiver = $1;
}
print "API version is $apiver ... <confirm> "; <STDIN>;

#print "Updating public GIT tree\n";
#`git push --tags public`; die if $?;

my $r = new UCW::Release("pciutils");
my $ver = $r->GetVersionFromFile("Makefile", "VERSION=(.*)");
$r->GetVersionsFromChangelog("ChangeLog", "Released as (.*)\.");
push @{$r->{"rules"}}, '^win32/config.h' => 's';
if ($ver =~ /-/) {
	$r->{"ALPHADIR"} = "alpha/";
	$r->{"conditions"}->{"ALPHA_VERSION"} = 1;
} else {
	$r->{"ALPHADIR"} = "";
	$r->{"conditions"}->{"ALPHA_VERSION"} = -1;
}
push @{$r->{"uploads"}}, {
	"url" => "scp://jabberwock.ucw.cz/home/ftp/pub/mj/linux/pci/" . $r->{"ALPHADIR"}
##	},{
##	"url" => "scp://master.kernel.org/pub/software/utils/pciutils/" . $r->{"ALPHADIR"}
	};
$r->ParseOptions;
$r->InitDist("maint/dist");
my $reldir = $r->GenPackage;
$r->GenFile("README");
$r->GenFile("pciutils.lsm");
$r->Dispatch;
if ($r->{"do_upload"}) {
	print "Uploading pci.ids to Jabberwock\n";
	`scp -C pci.ids pciids\@jabberwock.ucw.cz:05-pciutils.new`; die if $?;
	`ssh pciids\@jabberwock.ucw.cz mv 05-pciutils.new origs/05-pciutils`; die if $?;
}

# Hacks for kernel.org
print "Preparing kernel.org package\n";
my $dd = $r->{"DISTDIR"};
my $pkg = $r->{"PKG"};
`gzip -d <$dd/$pkg.tar.gz >$dd/$pkg.tar`; die if $?;
system "gpg", "--armor", "--detach-sig", "-o", "$dd/$pkg.tar.sig", "$dd/$pkg.tar"; die if $?;
if ($r->{"do_upload"}) {
	print "Uploading to kernel.org\n";
	print "<confirm> "; <STDIN>;
	system '/home/mj/tree/kup/kup', 'put', "$dd/$pkg.tar", "$dd/$pkg.tar.sig", "/pub/software/utils/pciutils/$pkg.tar.gz"; die if $?;
}

# GitHub releases
print "Creating a GitHub release\n";
my $ghrel = "v$ver";
`gh release create $ghrel --verify-tag --latest --notes "Automatically generated. Please see the ChangeLog for details."`;
die if $?;
`gh release upload $ghrel $dd/$pkg.tar.gz $dd/pkg.tar.gz.sign";
die if $?
